/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.WS;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import oracle.jdbc.driver.OracleDriver;

/**
 *
 * @author Trabajo
 */
@WebService()
public class AlertasSeguridad {

    /**
     * Web service operation
     */
    @WebMethod(operationName = "darNivelInseguridad")
    public String darNivelInseguridad(@WebParam(name = "latitud")
    final double latitud, @WebParam(name = "longitud")
    final double longitud)
    {
        try
        {
            DriverManager.registerDriver(new OracleDriver());
            try
            {
                Connection conexion =  DriverManager.getConnection("jdbc:oracle:thin:@chie.uniandes.edu.co:1522:chie10", "s3702a09", "a3702a09");
                PreparedStatement statement =  conexion.prepareStatement("select nivelesinseguridad.nombrenivelinseguridad as Nombre from nivelinseguridadlugar "+
                " inner join secciones on nivelinseguridadlugar.idseccion = secciones.idseccion"+
                " inner join nivelesinseguridad on nivelesinseguridad.idnivelinseguridad = nivelinseguridadlugar.idnivelinseguridad"+
                " where secciones.latitudinicial <= ? and secciones.latitudfinal >= ? "+
                " and secciones.longitudinicial <=? and secciones.longitudfinal >=?");
                statement.setFloat(1, Float.parseFloat(latitud + ""));
                statement.setFloat(2, Float.parseFloat(latitud + ""));
                statement.setFloat(3, Float.parseFloat(longitud + ""));
                statement.setFloat(4, Float.parseFloat(longitud + ""));
                ResultSet set = statement.executeQuery();
                String resultado = "";
                if(set.next())
                {
                    resultado = set.getString(1);
                }
                statement.close();
                conexion.close();
                return resultado;
            }
            catch(Exception e)
            {
                return "paila " + e.getMessage();
            }
        }
        catch (SQLException ex)
        {
            Logger.getLogger(AlertasSeguridad.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "listarPuntosInseguros")
    public Vector<String> listarPuntosInseguros(@WebParam(name = "latitud")
    final float latitud, @WebParam(name = "longitud")
    final float longitud) {
        try
        {
            DriverManager.registerDriver(new OracleDriver());
            try
            {
                Connection conexion =  DriverManager.getConnection("jdbc:oracle:thin:@chie.uniandes.edu.co:1522:chie10", "s3702a09", "a3702a09");
                PreparedStatement statement =  conexion.prepareStatement("select latitudrobo, longitudrobo, nombretipoinseguridad from robosregistrados " +
                        "inner join tiposinseguridad on tiposinseguridad.idtipoinseguridad = robosregistrados.idtipoinseguridad " +
                        "where latitudrobo <= (? + 10) and longitudrobo <= (? + 10) and latitudrobo >= (? - 10) and longitudrobo >= (? - 10)");
                statement.setFloat(1, Float.parseFloat(latitud + ""));
                statement.setFloat(2, Float.parseFloat(longitud + ""));
                statement.setFloat(3, Float.parseFloat(latitud + ""));
                statement.setFloat(4, Float.parseFloat(longitud + ""));
                ResultSet set = statement.executeQuery();
                Vector<String> listado = new Vector<String>();
                while(set.next())
                {
                    listado.add(set.getFloat(1) + "/" + set.getFloat(2)+"/" +set.getString(3));
                }
                set.close();
                statement.close();
                conexion.close();
                return listado;
            }
            catch(Exception e)
            {
                
                return null;
            }
        }
        catch (SQLException ex)
        {
            Logger.getLogger(AlertasSeguridad.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "darNivelPunto")
    public String darNivelPunto(@WebParam(name = "latitud")
    final float latitud, @WebParam(name = "longitud")
    final float longitud) {
       try
        {
            DriverManager.registerDriver(new OracleDriver());
            try
            {
                Connection conexion =  DriverManager.getConnection("jdbc:oracle:thin:@chie.uniandes.edu.co:1522:chie10", "s3702a09", "a3702a09");
                PreparedStatement statement =  conexion.prepareStatement("select nivelesinseguridad.nombrenivelinseguridad from nivelinseguridadlugar inner join secciones on secciones.idseccion = nivelinseguridadlugar.idseccion"+
" inner join nivelesinseguridad on nivelinseguridadlugar.idnivelinseguridad = nivelesinseguridad.idnivelinseguridad"+
" where secciones.latitudinicial >= ? and secciones.longitudinicial <= ?"+
" and secciones.latitudfinal <= ? and secciones.longitudfinal >= ?");
                statement.setFloat(1, Float.parseFloat(latitud + ""));
                statement.setFloat(2, Float.parseFloat(longitud + ""));
                statement.setFloat(3, Float.parseFloat(latitud + ""));
                statement.setFloat(4, Float.parseFloat(longitud + ""));
                ResultSet set = statement.executeQuery();
                String resultado = "";
                if(set.next())
                {
                    resultado = set.getString(1);
                }
                set.close();
                statement.close();
                conexion.close();
                return resultado;
            }
            catch(Exception e)
            {
                return null;
            }
        }
        catch (SQLException ex)
        {
            Logger.getLogger(AlertasSeguridad.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "listarPuntosInsegurosTipo")
    public Vector<String> listarPuntosInsegurosTipo(@WebParam(name = "latitud")
    final float latitud, @WebParam(name = "longitud")
    final float longitud, @WebParam(name = "tipoInseguridad")
    final String tipoInseguridad) {
        try
        {
            DriverManager.registerDriver(new OracleDriver());
            try
            {
                Connection conexion =  DriverManager.getConnection("jdbc:oracle:thin:@chie.uniandes.edu.co:1522:chie10", "s3702a09", "a3702a09");
                PreparedStatement statement =  conexion.prepareStatement("select latitudrobo, longitudrobo, nombretipoinseguridad from robosregistrados " +
                        "inner join tiposinseguridad on tiposinseguridad.idtipoinseguridad = robosregistrados.idtipoinseguridad " +
                        "where tiposinseguridad.nombretipoinseguridad = ? and latitudrobo <= (? + 10) and longitudrobo <= (? + 10) and latitudrobo >= (? - 10) and longitudrobo >= (? - 10)");
                statement.setString(1, tipoInseguridad.trim());
                statement.setFloat(2, Float.parseFloat(latitud + ""));
                statement.setFloat(3, Float.parseFloat(longitud + ""));
                statement.setFloat(4, Float.parseFloat(latitud + ""));
                statement.setFloat(5, Float.parseFloat(longitud + ""));
                ResultSet set = statement.executeQuery();
                Vector<String> listado = new Vector<String>();
                while(set.next())
                {
                    listado.add(set.getFloat(1) + "/" + set.getFloat(2)+"/" +set.getString(3));
                }
                set.close();
                statement.close();
                conexion.close();
                return listado;
            }
            catch(Exception e)
            {

                return null;
            }
        }
        catch (SQLException ex)
        {
            Logger.getLogger(AlertasSeguridad.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
}
